package com.itany.corejava.code08_常用类.包装类;

/**
 * @author 石小俊
 * 2024年07月22日 14:56
 */
public class Test02_拆箱与装箱 {

    public static void main(String[] args) {
        // 装箱:将基本数据类型转换成包装类
        int i = 1;
        // JDK5之前,无法直接将int类型的值转换成对应包装类
        //Integer integer = i;
        // 必须手动进行装箱
        Integer integer = new Integer(i);
        // JDK5(包含)之后,会自动进行装箱
        Integer integer2 = i;

        // 拆箱:将包装类转换成基本数据类型
        //int i2 = integer2;
        // JDK5之前必须手动拆箱
        int i2 = integer.intValue();
        // JDK5(包含)之后,会自动进行拆箱
        int i3 = integer;
        System.out.println(i3);

        int i4 = 10;
        Integer integer4 = new Integer(10);
        // 此时比较时会将包装类自动拆箱后进行比较
        // 即:比较的是值的大小
        System.out.println(i4 == integer4); // true

        // 1.装箱,int的10-->Integer
        // 2.自动类型转换,Integer --> Object
        Object obj = 10;

        // 直接写值的场景都表示基本数据类型
        test(1);
        test(new Integer(1));

        test02(1);
        test02(1L);
    }

    public static void test(int i) {
        System.out.println("执行int");
    }

    public static void test(Integer i) {
        System.out.println("执行Integer");
    }

    public static void test02(int i) {
        System.out.println("调用int的test02");
    }

    public static void test02(long i) {
        System.out.println("调用long的test02");
    }
}
